約 2,913,050 件
https://w.atwiki.jp/sampleisbest/pages/155.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 プロジェクト プロジェクト名 dshow2 アプリケーションの種類 Windows アプリケーション 追加のオプション 空のプロジェクト 文字セット Unicode 参考 音声付き動画をフルスクリーンで再生する ウィンドウレス モードの使い方 Enhanced Video Rendererを使ってみよう dshow2.cpp // Unicode文字セット #pragma comment(lib, "strmiids.lib") #include DShow.h #include evr.h #define SAFE_RELEASE(x) { if (x) { x- Release(); x = NULL; } } #define CLASS_NAME TEXT("dshow2") #define WINDOW_NAME TEXT("dshow2") // 関数プロトタイプ宣言 HRESULT OpenFile(HWND hWnd, LPCWSTR pszFileName); HRESULT InitEvr(HWND hWnd); HRESULT SetVideoPos(HWND hWnd, int nMode); LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); // 外部変数構造体 static struct { IGraphBuilder *pGraph; IMediaControl *pControl; IMFVideoDisplayControl *pVideo; SIZE size; int nPlay; } g; //============================================================================== int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wcx; HWND hWnd; MSG msg = {NULL}; HRESULT hr; // COMライブラリの初期化 hr = CoInitialize(NULL); if (FAILED(hr)) { return 0; } // ウィンドウクラスの登録 ZeroMemory( wcx, sizeof wcx); wcx.cbSize= sizeof wcx; wcx.style= CS_HREDRAW | CS_VREDRAW; wcx.lpfnWndProc= MainWndProc; wcx.hInstance= hInstance; wcx.hCursor= LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)); //wcx.hbrBackground= (HBRUSH)(COLOR_WINDOW + 1);// 黒がいいかも wcx.lpszClassName= CLASS_NAME; if (RegisterClassEx( wcx) == 0) { goto Exit; } // ウィンドウの作成 hWnd = CreateWindow(CLASS_NAME, WINDOW_NAME, WS_OVERLAPPEDWINDOW, //CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 100, 100, 640, 480, NULL, NULL, hInstance, NULL); if (hWnd == NULL) { goto Exit; } // DirectShowフィルタの準備 hr = OpenFile(hWnd, L"c \\tmp\\hoge.mp4"); if (FAILED(hr)) { goto Exit; } ShowWindow(hWnd, nCmdShow); // 動画再生 hr = g.pControl- Run(); g.nPlay = 1; // メッセージループ do { Sleep(1); if (PeekMessage( msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage( msg); DispatchMessage( msg); } } while (msg.message != WM_QUIT); // 動画停止 hr = g.pControl- Stop(); Sleep(1000); Exit SAFE_RELEASE(g.pVideo); SAFE_RELEASE(g.pControl); SAFE_RELEASE(g.pGraph); CoUninitialize(); return msg.wParam; } //------------------------------------------------------------------------------ HRESULT OpenFile(HWND hWnd, LPCWSTR pszFile) { // フィルタグラフの作成 HRESULT hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS( g.pGraph)); // メディアコントロールインターフェイスの取得 if (SUCCEEDED(hr)) { hr = g.pGraph- QueryInterface(IID_PPV_ARGS( g.pControl)); } // ビデオの作成 if (SUCCEEDED(hr)) { hr = InitEvr(hWnd); } // グラフを作成する if (SUCCEEDED(hr)) { hr = g.pGraph- RenderFile(pszFile, NULL); } // 描画領域の設定 if (SUCCEEDED(hr)) { g.pVideo- GetNativeVideoSize( g.size, NULL); } if (SUCCEEDED(hr)) { hr = SetVideoPos(hWnd, 2); } return hr; } //------------------------------------------------------------------------------ HRESULT InitEvr(HWND hWnd) { IBaseFilter *pEvr = NULL; // EVRの作成 HRESULT hr = CoCreateInstance(CLSID_EnhancedVideoRenderer, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS( pEvr)); // フィルタグラフにEVRを追加 if (SUCCEEDED(hr)) { hr = g.pGraph- AddFilter(pEvr, L"EVR"); } IMFGetService *pService = NULL; if (SUCCEEDED(hr)) { hr = pEvr- QueryInterface(IID_PPV_ARGS( pService)); } if (SUCCEEDED(hr)) { hr = pService- GetService(MR_VIDEO_RENDER_SERVICE, IID_PPV_ARGS( g.pVideo)); } SAFE_RELEASE(pService); if (SUCCEEDED(hr)) { hr = g.pVideo- SetVideoWindow(hWnd); } SAFE_RELEASE(pEvr); return hr; } //------------------------------------------------------------------------------ HRESULT SetVideoPos(HWND hWnd, int nMode) { MFVideoNormalizedRect mvnr = {0.0f, 0.0f, 1.0f, 1.0f}; RECT rcDst; if (1 = nMode nMode = 4) { SetRect( rcDst, 0, 0, g.size.cx * nMode / 2, g.size.cy * nMode / 2); AdjustWindowRectEx( rcDst, WS_OVERLAPPEDWINDOW, FALSE, 0); SetWindowPos(hWnd, NULL, 0, 0, rcDst.right - rcDst.left, rcDst.bottom - rcDst.top, SWP_NOZORDER | SWP_NOMOVE); } GetClientRect(hWnd, rcDst); return g.pVideo- SetVideoPosition( mvnr, rcDst); } //------------------------------------------------------------------------------ LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CHAR switch (wParam) { case VK_SPACE if (g.nPlay) { g.pControl- Pause(); g.nPlay = 0; } else { g.pControl- Run(); g.nPlay = 1; } break; case s g.pControl- StopWhenReady(); g.nPlay = 0; break; case 1 case 2 case 3 case 4 SetVideoPos(hWnd, wParam - 0 ); break; case VK_ESCAPE DestroyWindow(hWnd); break; } break; case WM_SIZE SetVideoPos(hWnd, 0); break; case WM_DESTROY PostQuitMessage(0); break; default return DefWindowProc(hWnd, uMsg, wParam, lParam); } return 0; } dshow2_fullscreen.cpp +... // Unicode文字セット #pragma comment(lib, "strmiids.lib") #pragma comment(lib, "d3d9.lib") #include DShow.h #include d3d9.h #include vmr9.h #define SAFE_RELEASE(x) { if (x) { x- Release(); x = NULL; } } #define CLASS_NAME TEXT("dshow2") #define WINDOW_NAME TEXT("dshow2") // 関数プロトタイプ宣言 HRESULT OpenFile(HWND hWnd, LPCWSTR pszFileName); LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); // 外部変数構造体 static struct { IGraphBuilder *pGraph; IMediaControl * pControl; IBaseFilter *pVideo; IVMRWindowlessControl9 *pWndless; ICaptureGraphBuilder2 *pCapture; } g; //============================================================================== int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wcx; HWND hWnd; MSG msg = {NULL}; HRESULT hr; // COMの初期化 hr = CoInitialize(NULL); if (FAILED(hr)) { goto Exit; } // ウィンドウクラスの登録 ZeroMemory( wcx, sizeof wcx); wcx.cbSize= sizeof wcx; wcx.style= CS_HREDRAW | CS_VREDRAW; wcx.lpfnWndProc= MainWndProc; wcx.hInstance= hInstance; wcx.hCursor= LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)); wcx.hbrBackground= (HBRUSH)(COLOR_WINDOW + 1);// 黒がいいかも wcx.lpszClassName= CLASS_NAME; if (RegisterClassEx( wcx) == 0) { goto Exit; } // ウィンドウの作成 hWnd = CreateWindow(CLASS_NAME, WINDOW_NAME, WS_POPUPWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, //100, 100, 640, 480, NULL, NULL, hInstance, NULL); if (hWnd == NULL) { goto Exit; } //---------------------------------------------------------------------- LPDIRECT3D9 pD3D = NULL; LPDIRECT3DDEVICE9 pD3DDev = NULL; D3DPRESENT_PARAMETERS d3dpp; // Direct3Dの初期化 pD3D = Direct3DCreate9(D3D_SDK_VERSION); if (pD3D == NULL) { goto Exit; } ZeroMemory( d3dpp, sizeof d3dpp); d3dpp.BackBufferWidth= GetSystemMetrics(SM_CXSCREEN); d3dpp.BackBufferHeight= GetSystemMetrics(SM_CYSCREEN); d3dpp.BackBufferFormat= D3DFMT_A8R8G8B8; //d3dpp.MultiSampleType= D3DMULTISAMPLE_NONE;// 0 d3dpp.SwapEffect= D3DSWAPEFFECT_DISCARD;// 1 d3dpp.hDeviceWindow= hWnd; d3dpp.Windowed= FALSE;// windowed / full-screen //d3dpp.AutoDepthStencilFormat = D3DFMT_UNKNOWN;// 0 //d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;// 0 hr = pD3D- CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, d3dpp, pD3DDev); if (FAILED(hr)) { goto Exit; } // DirectShowフィルタの準備 hr = OpenFile(hWnd, L"c \\tmp\\hoge.mp4"); if (FAILED(hr)) { goto Exit; } //---------------------------------------------------------------------- ShowWindow(hWnd, nCmdShow); // 動画再生 hr = g.pControl- Run(); // メッセージループ do { Sleep(1); if (PeekMessage( msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage( msg); DispatchMessage( msg); } } while (msg.message != WM_QUIT); // 動画停止 hr = g.pControl- Stop(); Sleep(1000); Exit SAFE_RELEASE(g.pCapture); SAFE_RELEASE(g.pWndless); SAFE_RELEASE(g.pVideo); SAFE_RELEASE(g.pControl); SAFE_RELEASE(g.pGraph); SAFE_RELEASE(pD3DDev); SAFE_RELEASE(pD3D); CoUninitialize(); return msg.wParam; } //------------------------------------------------------------------------------ HRESULT OpenFile(HWND hWnd, LPCWSTR pszFileName) { //---------------------------------------------------------------------- // InitGraph // フィルタグラフの作成 HRESULT hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS( g.pGraph)); // メディアコントロールインターフェイスの取得 if (SUCCEEDED(hr)) { hr = g.pGraph- QueryInterface(IID_PPV_ARGS( g.pControl)); } //---------------------------------------------------------------------- // ソースフィルタの生成と登録 IBaseFilter *pSource = NULL; if (SUCCEEDED(hr)) { hr = g.pGraph- AddSourceFilter(pszFileName, NULL, pSource); } //---------------------------------------------------------------------- // RenderStreams // AddFilterByCLSID // VMR9フィルタの作成と登録 if (SUCCEEDED(hr)) { hr = CoCreateInstance(CLSID_VideoMixingRenderer9, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS( g.pVideo)); } if (SUCCEEDED(hr)) { hr = g.pGraph- AddFilter(g.pVideo, L"VMR-9"); } //---------------------------------------------------------------------- // InitWindowlessVMR9 // VMR9をウィンドウレスモードにする IVMRFilterConfig *pConfig = NULL;// IVMRFilterConfig9 if (SUCCEEDED(hr)) { hr = g.pVideo- QueryInterface(IID_IVMRFilterConfig9, (LPVOID *) pConfig); } if (SUCCEEDED(hr)) { hr = pConfig- SetRenderingMode(VMRMode_Windowless);// VMR9Mode_Windowless = 2 } // 描画ウィンドウの指定 if (SUCCEEDED(hr)) { hr = g.pVideo- QueryInterface(IID_PPV_ARGS( g.pWndless)); } if (SUCCEEDED(hr)) { hr = g.pWndless- SetVideoClippingWindow(hWnd); } // pWndless- SetAspectRatioMode(VMR9ARMode_LetterBox); SAFE_RELEASE(pConfig); //---------------------------------------------------------------------- // CaptureGraphBuilder2インターフェイスの取得 if (SUCCEEDED(hr)) { hr = CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS( g.pCapture)); } if (SUCCEEDED(hr)) { hr = g.pCapture- SetFiltergraph(g.pGraph); } // フィルタの接続 if (SUCCEEDED(hr)) { hr = g.pCapture- RenderStream(NULL, NULL, pSource, NULL, g.pVideo); } if (SUCCEEDED(hr)) { hr = g.pCapture- RenderStream(NULL, MEDIATYPE_Audio, pSource, NULL, NULL); } // 描画領域の設定 LONG lWidth, lHeight; RECT rcSrc, rcDst; if (SUCCEEDED(hr)) { hr = g.pWndless- GetNativeVideoSize( lWidth, lHeight, NULL, NULL); } if (SUCCEEDED(hr)) { SetRect( rcSrc, 0, 0, lWidth, lHeight); GetClientRect(hWnd, rcDst); hr = g.pWndless- SetVideoPosition( rcSrc, rcDst); } SAFE_RELEASE(pSource); return hr; } //------------------------------------------------------------------------------ LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CHAR if (wParam == VK_ESCAPE) { DestroyWindow(hWnd); } break; case WM_DESTROY PostQuitMessage(0); break; default return DefWindowProc(hWnd, uMsg, wParam, lParam); } return 0; } dshow2_vmr9.cpp +... // Unicode文字セット #pragma comment(lib, "strmiids.lib") #include DShow.h #include d3d9.h #include vmr9.h #define SAFE_RELEASE(x) { if (x) { x- Release(); x = NULL; } } #define CLASS_NAME TEXT("dshow2") #define WINDOW_NAME TEXT("dshow2") // 関数プロトタイプ宣言 HRESULT OpenFile(HWND hWnd, LPCWSTR pszFileName); HRESULT InitWndlessVMR(HWND hWnd, IGraphBuilder *pGraph, IVMRWindowlessControl9 **ppWndless); HRESULT SetVideoPos(HWND hWnd, int nMode); LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); // 外部変数構造体 static struct { IGraphBuilder *pGraph; IMediaControl *pControl; IVMRWindowlessControl9 *pWndless; SIZE size; int nPlay; } g; //============================================================================== int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wcx; HWND hWnd; MSG msg = {NULL}; HRESULT hr; // COMライブラリの初期化 hr = CoInitialize(NULL); if (FAILED(hr)) { return 0; } // ウィンドウクラスの登録 ZeroMemory( wcx, sizeof wcx); wcx.cbSize= sizeof wcx; wcx.style= CS_HREDRAW | CS_VREDRAW; wcx.lpfnWndProc= MainWndProc; wcx.hInstance= hInstance; wcx.hCursor= LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)); //wcx.hbrBackground= (HBRUSH)(COLOR_WINDOW + 1);// 黒がいいかも wcx.lpszClassName= CLASS_NAME; if (RegisterClassEx( wcx) == 0) { goto Exit; } // ウィンドウの作成 hWnd = CreateWindow(CLASS_NAME, WINDOW_NAME, WS_OVERLAPPEDWINDOW, //CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 100, 100, 640, 480, NULL, NULL, hInstance, NULL); if (hWnd == NULL) { goto Exit; } // DirectShowフィルタの準備 hr = OpenFile(hWnd, L"c \\tmp\\hoge.mp4"); if (FAILED(hr)) { goto Exit; } ShowWindow(hWnd, nCmdShow); // 動画再生 hr = g.pControl- Run(); g.nPlay = 1; // メッセージループ do { Sleep(1); if (PeekMessage( msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage( msg); DispatchMessage( msg); } } while (msg.message != WM_QUIT); // 動画停止 hr = g.pControl- Stop(); Sleep(1000); Exit SAFE_RELEASE(g.pWndless); SAFE_RELEASE(g.pControl); SAFE_RELEASE(g.pGraph); CoUninitialize(); return msg.wParam; } //------------------------------------------------------------------------------ HRESULT OpenFile(HWND hWnd, LPCWSTR pszFile) { // フィルタグラフの作成 HRESULT hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS( g.pGraph)); // メディアコントロールインターフェイスの取得 if (SUCCEEDED(hr)) { hr = g.pGraph- QueryInterface(IID_PPV_ARGS( g.pControl)); } // ウィンドウレスコントロールの作成 if (SUCCEEDED(hr)) { hr = InitWndlessVMR(hWnd, g.pGraph, g.pWndless); } // グラフを作成する if (SUCCEEDED(hr)) { hr = g.pGraph- RenderFile(pszFile, NULL); } // 描画領域の設定 if (SUCCEEDED(hr)) { hr = g.pWndless- GetNativeVideoSize( g.size.cx, g.size.cy, NULL, NULL); } if (SUCCEEDED(hr)) { hr = SetVideoPos(hWnd, 2); } return hr; } //------------------------------------------------------------------------------ HRESULT InitWndlessVMR(HWND hWnd, IGraphBuilder *pGraph, IVMRWindowlessControl9 **ppWndless) { IBaseFilter *pVmr = NULL; IVMRWindowlessControl9 *pWndless = NULL; if (!pGraph || !ppWndless) { return E_POINTER; } // VMRを作成する HRESULT hr = CoCreateInstance(CLSID_VideoMixingRenderer9, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS( pVmr)); // フィルタグラフにVMRを追加する if (SUCCEEDED(hr)) { hr = pGraph- AddFilter(pVmr, L"VMR-9"); } // レンダリングモードを設定する IVMRFilterConfig9 *pConfig = NULL; if (SUCCEEDED(hr)) { hr = pVmr- QueryInterface(IID_IVMRFilterConfig9, (LPVOID *) pConfig); } if (SUCCEEDED(hr)) { hr = pConfig- SetRenderingMode(VMR9Mode_Windowless); } SAFE_RELEASE(pConfig); // ウィンドウを設定する if (SUCCEEDED(hr)) { hr = pVmr- QueryInterface(IID_PPV_ARGS( pWndless)); } if (SUCCEEDED(hr)) { hr = pWndless- SetVideoClippingWindow(hWnd); if (SUCCEEDED(hr)) { *ppWndless = pWndless; } else { SAFE_RELEASE(pWndless); } } // pWndless- SetAspectRatioMode(VMR9ARMode_LetterBox); SAFE_RELEASE(pVmr); return hr; } //------------------------------------------------------------------------------ HRESULT SetVideoPos(HWND hWnd, int nMode) { RECT rcSrc; RECT rcDst; SetRect( rcSrc, 0, 0, g.size.cx, g.size.cy); if (1 = nMode nMode = 4) { SetRect( rcDst, 0, 0, rcSrc.right * nMode / 2, rcSrc.bottom * nMode / 2); AdjustWindowRectEx( rcDst, WS_OVERLAPPEDWINDOW, FALSE, 0); SetWindowPos(hWnd, NULL, 0, 0, rcDst.right - rcDst.left, rcDst.bottom - rcDst.top, SWP_NOZORDER | SWP_NOMOVE); } GetClientRect(hWnd, rcDst); return g.pWndless- SetVideoPosition( rcSrc, rcDst); } //------------------------------------------------------------------------------ LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CHAR switch (wParam) { case VK_SPACE if (g.nPlay) { g.pControl- Pause(); g.nPlay = 0; } else { g.pControl- Run(); g.nPlay = 1; } break; case s g.pControl- StopWhenReady(); g.nPlay = 0; break; case 1 case 2 case 3 case 4 SetVideoPos(hWnd, wParam - 0 ); break; case VK_ESCAPE DestroyWindow(hWnd); break; } break; case WM_SIZE SetVideoPos(hWnd, 0); break; case WM_DESTROY PostQuitMessage(0); break; default return DefWindowProc(hWnd, uMsg, wParam, lParam); } return 0; }
https://w.atwiki.jp/sampleisbest/pages/99.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 コンソール アプリケーション プロジェクト名 input アプリケーションの種類 コンソール アプリケーション 追加のオプション 空のプロジェクト 参考 scanf - Wikipedia input1.c #include ctype.h #include stdio.h int main() { int i; while (1) { i = getchar(); if (i == EOF) break; printf("%02x %c\n", i, isprint(i) ? i ? ); } return 0; } 出力 a[Enter] 61 a 0a ? あ[Enter] 82 ? a0 ? 0a ? ^Z[Enter] input2.c #define _CRT_SECURE_NO_WARNINGS #include stdio.h #include stdlib.h int main() { char buf[10+1]; char *p; while (1) { printf("(Ctrl-Zで終了) "); p = fgets(buf, _countof(buf), stdin); if (p == NULL) break; printf("[%s]\n", buf); } return 0; } 出力 (Ctrl-Zで終了) aaa bbb ccc[Enter] [aaa bbb cc] (Ctrl-Zで終了) [c ] (Ctrl-Zで終了) [Enter] [ ] (Ctrl-Zで終了) ^Z[Enter] 考察 残りの文字列が入力ストリーム上に残ってしまう 改行文字も格納される input3.c #define _CRT_SECURE_NO_WARNINGS #include stdio.h int main() { char buf[10+1]; int i; while (1) { printf("(Ctrl-Zで終了) "); i = scanf("%10[^\n]%*[^\n]", buf); if (i == EOF) break; getchar(); if (i != 1) continue; printf("[%s]\n", buf); } return 0; } 出力 (Ctrl-Zで終了) aaa bbb ccc[Enter] [aaa bbb cc] (Ctrl-Zで終了) [Enter] (Ctrl-Zで終了) ^Z[Enter] input4.c // Unicode 文字セット #include locale.h // LC_CTYPE #include stdio.h // EOF #include stdlib.h // _countof() #include tchar.h int main() { _TCHAR buf[10+1]; int i; _tsetlocale(LC_CTYPE, _T("")); while (1) { _tprintf(_T("(Ctrl-Zで終了) ")); i = _tscanf_s(_T("%10[^\n]%*[^\n]"), buf, _countof(buf)); if (i == EOF) break; _gettchar(); if (i != 1) continue; _tprintf(_T("[%s]\n"), buf); } return 0; } 出力 (Ctrl-Zで終了) aaa bbb ccc[Enter] [aaa bbb cc] (Ctrl-Zで終了) あああ いいい ううう[Enter] [あああ いいい うう] (Ctrl-Zで終了) [Enter] (Ctrl-Zで終了) ^Z[Enter]
https://w.atwiki.jp/sampleisbest/pages/29.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 プロジェクト プロジェクト名 DlgFrame アプリケーションの種類 Windows アプリケーション 追加のオプション 空のプロジェクト 文字セット マルチ バイト 参考 リソースを使わないモーダルダイアログ http //www.sm.rim.or.jp/~shishido/mdialog.html DlgFrame.c // マルチバイト文字セット #include stdio.h #include string.h #include Windows.h #define IDC_STATIC-1 #define IDC_EDIT100 static HINSTANCEg_hInstance; LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); void OnCreate(HWND hWnd); int WINAPI WinMain( HINSTANCEhInstance, HINSTANCEhPrevInstance, LPSTRlpCmdLine, intnCmdShow) { const characClassName[] = "DlgFrame"; WNDCLASSEXwcex; HWNDhWnd; MSGmsg; g_hInstance = hInstance; // ウィンドウクラスの登録 wcex.cbSize= sizeof wcex; wcex.style= CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc= WndProc; wcex.cbClsExtra= 0; wcex.cbWndExtra= 0; wcex.hInstance= hInstance; wcex.hIcon= LoadIcon(NULL, IDI_APPLICATION); wcex.hCursor= LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground= (HBRUSH)(COLOR_BTNFACE + 1); wcex.lpszMenuName= NULL; wcex.lpszClassName= acClassName; wcex.hIconSm= LoadIcon(NULL, IDI_APPLICATION); if (RegisterClassEx( wcex) == 0) { return 0; } // ウィンドウの作成 hWnd = CreateWindow( acClassName,// ClassName "Dialog Frame",// WindowName WS_OVERLAPPEDWINDOW,// Style CW_USEDEFAULT,// x 0,// y CW_USEDEFAULT,// Width 0,// Height NULL,// WndParent NULL,// Menu hInstance, NULL); if (hWnd == NULL) { return 0; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); while (GetMessage( msg, NULL, 0, 0)) { TranslateMessage( msg); DispatchMessage( msg); } return (int)msg.wParam; } LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { HWNDhWndEdit; switch (uMsg) { case WM_COMMAND hWndEdit = GetDlgItem(hWnd, IDC_EDIT); switch (LOWORD(wParam)) { case IDOK SetWindowText(hWndEdit, "OK"); break; case IDCANCEL SetWindowText(hWndEdit, "Cancel"); break; } break; case WM_CREATE OnCreate(hWnd); break; case WM_DESTROY PostQuitMessage(0); break; default return DefWindowProc(hWnd, uMsg, wParam, lParam); } return 0; } void OnCreate(HWND hWnd) { CreateWindow("STATIC", "Push button", WS_CHILD | WS_VISIBLE, 8, 8, 123, 32, hWnd, (HMENU)IDC_STATIC, g_hInstance, NULL); CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "Edit", WS_CHILD | WS_VISIBLE, 144, 8, 123, 32, hWnd, (HMENU)IDC_EDIT, g_hInstance, NULL); CreateWindow("BUTTON", "OK", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 8, 48, 128, 32, hWnd, (HMENU)IDOK, g_hInstance, NULL); CreateWindow("BUTTON", "Cancel", WS_CHILD | WS_VISIBLE, 144, 48, 128, 32, hWnd, (HMENU)IDCANCEL, g_hInstance, NULL); }
https://w.atwiki.jp/sampleisbest/pages/73.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 プロジェクト プロジェクト名 ImgView アプリケーションの種類 Windows アプリケーション 追加のオプション 空のプロジェクト 文字セット Unicode 作成中。 参考 イメージの描画 ピクチャーオブジェクト JPEG(ジェイペグ)やGIF(ジフ)を表示しよう^0^ ImgView.cpp #include tchar.h #include Windows.h #include shimgdata.h #include string #include vector #include "resource.h" typedef std vector std wstring VecStr; // 関数プロトタイプ宣言 ATOMMyRegisterClass(HINSTANCE hInstance); BOOLInitInstance(HINSTANCE hInstance, int nCmdShow); voidTrace(LPCTSTR ptcFormat, ...); voidCreateFileList(LPCTSTR ptcPath); LRESULT CALLBACKWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); intOnCommand(HWND hWnd, WPARAM wParam); voidOnEditPaste(HWND hWnd); voidOnDropFiles(HWND hWnd, WPARAM wParam); voidOnSizeAdjust(HWND hWnd, int iFlag); voidOnPaint(HWND hWnd, HDC hdc, PAINTSTRUCT ps); voidOnTimer(HWND hWnd); voidStopTimer(HWND hWnd); intGetImage(HWND hWnd); // グローバル変数 TCHARg_atcClassName[] = _T("ImgView"); TCHARg_atcWindowName[] = _T("Image Viewer"); HINSTANCEg_hInstance; TCHARg_atcWorkDir[_MAX_PATH]; UINT_PTRg_uiIDEvent = 0; VecStrg_vsFileName; VecStr size_typeg_posCurr = -1; IShellImageDataFactory*g_pShellImageDataFactory = NULL; IShellImageData*g_pShellImageData = NULL; SIZEg_sizeDest; //============================================================================== int APIENTRY _tWinMain( HINSTANCEhInstance, HINSTANCEhPrevInstance, LPTSTRlpCmdLine, intnCmdShow) { MSGmsg; HACCELhAccelTable; LPTSTRptcCmdLine; LPTSTR*argv; intargc; ptcCmdLine = GetCommandLine(); argv = CommandLineToArgvW(ptcCmdLine, argc); if (2 = argc) { CreateFileList(argv[1]); } MyRegisterClass(hInstance); if (InitInstance(hInstance, nCmdShow) == FALSE) { return 0; } hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDR_MAINFRAME); while (GetMessage( msg, NULL, 0, 0)) { if (TranslateAccelerator(msg.hwnd, hAccelTable, msg) == 0) { TranslateMessage( msg); DispatchMessage( msg); } } return msg.wParam; } //------------------------------------------------------------------------------ ATOM MyRegisterClass(HINSTANCE hInstance) { WNDCLASSEXwcex; wcex.cbSize= sizeof (WNDCLASSEX); wcex.style= CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc= WndProc; wcex.cbClsExtra= 0; wcex.cbWndExtra= 0; wcex.hInstance= hInstance; wcex.hIcon= LoadIcon(NULL, IDI_APPLICATION); wcex.hCursor= LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground= (HBRUSH)(COLOR_WINDOW + 1); wcex.lpszMenuName= NULL; wcex.lpszClassName= g_atcClassName; wcex.hIconSm= LoadIcon(NULL, IDI_APPLICATION); return RegisterClassEx( wcex); } //------------------------------------------------------------------------------ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { HWNDhWnd; g_hInstance = hInstance; hWnd = CreateWindowEx( WS_EX_ACCEPTFILES, g_atcClassName, g_atcWindowName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); if (hWnd == NULL) { return FALSE; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE; } //------------------------------------------------------------------------------ void Trace(LPCTSTR ptcFormat, ...) { va_listargs; TCHARatcBuf[512]; intiRet; va_start(args, ptcFormat); iRet = _vstprintf_s(atcBuf, ptcFormat, args); if (0 iRet) { OutputDebugString(atcBuf); } va_end(args); } //------------------------------------------------------------------------------ void CreateFileList(LPCTSTR ptcPath) { WIN32_FIND_DATAwfd; TCHARatcWorkFName[_MAX_FNAME]; TCHARatcPath[_MAX_PATH]; TCHARatcDrive[_MAX_DRIVE]; TCHARatcDir[_MAX_DIR]; TCHARatcFName[_MAX_FNAME]; TCHARatcExt[_MAX_EXT]; HANDLEhFindFile; DWORDdwMask; VecStr size_typepos; g_vsFileName.clear(); g_posCurr = -1; _tsplitpath_s(ptcPath, atcDrive, atcDir, atcFName, atcExt); _stprintf_s(g_atcWorkDir, _T("%s%s"), atcDrive, atcDir); _stprintf_s(atcWorkFName, _T("%s%s"), atcFName, atcExt); _stprintf_s(atcPath, _T("%s*.*"), g_atcWorkDir); hFindFile = FindFirstFile(atcPath, wfd); dwMask = FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_HIDDEN; pos = 0; do { Trace(_T("%s\n"), wfd.cFileName); if (wfd.dwFileAttributes dwMask) { continue; } g_vsFileName.push_back(wfd.cFileName); if (_tcscmp(wfd.cFileName, atcWorkFName) == 0) { g_posCurr = pos; } pos++; } while (FindNextFile(hFindFile, wfd)); FindClose(hFindFile); } //------------------------------------------------------------------------------ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { PAINTSTRUCTps; HDChdc; switch (uMsg) { case WM_PAINT hdc = BeginPaint(hWnd, ps); OnPaint(hWnd, hdc, ps); EndPaint(hWnd, ps); break; case WM_TIMER OnTimer(hWnd); break; case WM_COMMAND if (OnCommand(hWnd, wParam)) { return DefWindowProc(hWnd, uMsg, wParam, lParam); } break; case WM_DROPFILES OnDropFiles(hWnd, wParam); DragFinish((HDROP)wParam); break; case WM_CREATE CoInitialize(NULL); CoCreateInstance(CLSID_ShellImageDataFactory, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS( g_pShellImageDataFactory)); GetImage(hWnd); break; case WM_DESTROY StopTimer(hWnd); if (g_pShellImageDataFactory) { g_pShellImageDataFactory- Release(); } CoUninitialize(); PostQuitMessage(0); break; default return DefWindowProc(hWnd, uMsg, wParam, lParam); } return 0; } //------------------------------------------------------------------------------ int OnCommand(HWND hWnd, WPARAM wParam) { switch (LOWORD(wParam)) { case ID_RIGHT case ID_DOWN g_posCurr++; if (g_vsFileName.size() = g_posCurr) { g_posCurr = 0; } break; case ID_LEFT case ID_UP if (g_posCurr = 0) { g_posCurr = g_vsFileName.size(); } g_posCurr--; break; case ID_ENTER ShowWindow(hWnd, IsZoomed(hWnd) ? SW_SHOWNOACTIVATE SW_MAXIMIZE); break; case ID_EDIT_PASTE // Ctrl+V OnEditPaste(hWnd); break; case ID_SIZE_ADJUST // 1 OnSizeAdjust(hWnd, 1); break; case ID_SIZE_NORMAL // 2 OnSizeAdjust(hWnd, 2); break; default return 1; } GetImage(hWnd); InvalidateRect(hWnd, NULL, FALSE);// ちらつき防止のため背景消去しない return 0; } //------------------------------------------------------------------------------ void OnEditPaste(HWND hWnd) { HANDLEhMem; LPTSTRptcFileName; if (IsClipboardFormatAvailable(CF_UNICODETEXT) == FALSE) { return; } if (OpenClipboard(hWnd) == FALSE) { return; } hMem = GetClipboardData(CF_UNICODETEXT); ptcFileName = (LPTSTR)GlobalLock(hMem); g_atcWorkDir[0] = _T( \0 ); g_vsFileName.clear(); g_vsFileName.push_back(ptcFileName); g_posCurr = 0; GlobalUnlock(hMem); CloseClipboard(); } //------------------------------------------------------------------------------ void OnDropFiles(HWND hWnd, WPARAM wParam) { HDROPhDrop; TCHARatcPath[_MAX_PATH]; hDrop = (HDROP)wParam; DragQueryFile(hDrop, 0, atcPath, _countof(atcPath)); CreateFileList(atcPath); GetImage(hWnd); InvalidateRect(hWnd, NULL, FALSE);// ちらつき防止のため背景消去しない } //------------------------------------------------------------------------------ void OnSizeAdjust(HWND hWnd, int iFlag) { SIZEsize; RECTrc; if (g_pShellImageData == NULL) { return; } switch (iFlag) { case 1 // Adjust size = g_sizeDest; break; case 2 // Normal g_pShellImageData- GetSize( size); break; } SetRect( rc, 0, 0, size.cx, size.cy); AdjustWindowRectEx( rc, WS_OVERLAPPEDWINDOW, FALSE, 0); SetWindowPos(hWnd, NULL, 0, 0, rc.right - rc.left, rc.bottom - rc.top, SWP_NOZORDER | SWP_NOMOVE); } //------------------------------------------------------------------------------ void OnPaint(HWND hWnd, HDC hdc, PAINTSTRUCT ps) { SIZEsize; RECTrcClt; RECTrcSrc; RECTrcDest; HBRUSHhbr = (HBRUSH)(COLOR_WINDOW + 1); if (g_pShellImageData == NULL) { return; } g_pShellImageData- GetSize( size); GetClientRect(hWnd, rcClt); // 画像とクライアント領域のアスペクト比を比較し // アスペクト比を維持したままクライアント領域に収める if (size.cx size.cy * rcClt.right / rcClt.bottom) { g_sizeDest.cx = rcClt.bottom * size.cx / size.cy; g_sizeDest.cy = rcClt.bottom; } else { g_sizeDest.cx = rcClt.right; g_sizeDest.cy = rcClt.right * size.cy / size.cx; } rcDest.left= (rcClt.right - g_sizeDest.cx) / 2; rcDest.top= (rcClt.bottom - g_sizeDest.cy) / 2; rcDest.right= rcDest.left + g_sizeDest.cx; rcDest.bottom= rcDest.top + g_sizeDest.cy; // 画像描画 SetRect( rcSrc, 0, 0, size.cx, size.cy); g_pShellImageData- Draw(hdc, rcDest, rcSrc); // 余白塗り潰し if (rcClt.left rcDest.left) { SetRect( rcSrc, rcClt.left, rcClt.top, rcDest.left, rcClt.bottom); FillRect(hdc, rcSrc, hbr); } if (rcClt.top rcDest.top) { SetRect( rcSrc, rcClt.left, rcClt.top, rcClt.right, rcDest.top); FillRect(hdc, rcSrc, hbr); } if (rcDest.right rcClt.right) { SetRect( rcSrc, rcDest.right, rcClt.top, rcClt.right, rcClt.bottom); FillRect(hdc, rcSrc, hbr); } if (rcDest.bottom rcClt.bottom) { SetRect( rcSrc, rcClt.left, rcDest.bottom, rcClt.right, rcClt.bottom); FillRect(hdc, rcSrc, hbr); } } //------------------------------------------------------------------------------ void OnTimer(HWND hWnd) { ULONGulPage; ULONGulPages; g_pShellImageData- GetCurrentPage( ulPage); g_pShellImageData- GetPageCount( ulPages); if (ulPage ulPages - 1) { g_pShellImageData- NextPage(); } else { g_pShellImageData- SelectPage(0); } InvalidateRect(hWnd, NULL, FALSE);// ちらつき防止のため背景消去しない } //------------------------------------------------------------------------------ // タイマー停止 void StopTimer(HWND hWnd) { if (g_uiIDEvent != 0) { KillTimer(hWnd, g_uiIDEvent); g_uiIDEvent = 0; } } //------------------------------------------------------------------------------ int GetImage(HWND hWnd) { TCHARatcPath[512]; LPCTSTRptcFileName; DWORDdwDelay; ULONGulPages; HRESULThr; StopTimer(hWnd); if (g_pShellImageData) { g_pShellImageData- Release(); g_pShellImageData = NULL; } // タイトルバー if (g_posCurr == -1) { SetWindowText(hWnd, g_atcWindowName); return 1; } ptcFileName = g_vsFileName[g_posCurr].c_str(); _stprintf_s(atcPath, _T("%s [%d/%d] - %s"), ptcFileName, g_posCurr + 1, g_vsFileName.size(), g_atcWindowName); SetWindowText(hWnd, atcPath); _stprintf_s(atcPath, _T("%s%s"), g_atcWorkDir, ptcFileName); hr = g_pShellImageDataFactory- CreateImageFromFile(atcPath, g_pShellImageData); if (FAILED(hr)) { return -1; } hr = g_pShellImageData- Decode(SHIMGDEC_DEFAULT, 0, 0); if (FAILED(hr)) { return -1; } // アニメ hr = g_pShellImageData- IsAnimated(); if (hr != S_OK) { return 0; } g_pShellImageData- GetDelay( dwDelay); g_pShellImageData- GetPageCount( ulPages); _stprintf_s(atcPath, _T("%s [%d/%d] Delay=%u Pages=%u - %s"), ptcFileName, g_posCurr + 1, g_vsFileName.size(), dwDelay, ulPages, g_atcWindowName); SetWindowText(hWnd, atcPath); g_uiIDEvent = SetTimer(hWnd, 1, dwDelay, NULL); return 0; } resource.h #define ID_EDIT_PASTE100 #define ID_SIZE_ADJUST101 #define ID_SIZE_NORMAL102 #define IDR_MAINFRAME128 #define ID_ENTER129 #define ID_LEFT130 #define ID_UP131 #define ID_RIGHT132 #define ID_DOWN133 ImgView.rc // リソーススクリプト #include windows.h #include "resource.h" //------------------------------------------------------------------------------ // アクセラレータ IDR_MAINFRAME ACCELERATORS BEGIN VK_RETURN,ID_ENTER,VIRTKEY// 0x0D VK_LEFT,ID_LEFT,VIRTKEY// 0x25 VK_UP,ID_UP,VIRTKEY// 0x26 VK_RIGHT,ID_RIGHT,VIRTKEY// 0x27 VK_DOWN,ID_DOWN,VIRTKEY// 0x28 "V",ID_EDIT_PASTE,VIRTKEY, CONTROL "1",ID_SIZE_ADJUST,VIRTKEY "2",ID_SIZE_NORMAL,VIRTKEY END
https://w.atwiki.jp/sampleisbest/pages/358.html
開発環境 Microsoft Visual Studio Express 2013 for Windows Desktop 実行環境 Microsoft Windows 8.1 (64bit) プロジェクトの種類 Visual C++/Win32/Win32 プロジェクト プロジェクト名 DxMandelbrot アプリケーションの種類 Windows アプリケーション 追加のオプション 空のプロジェクト、SDLチェック
https://w.atwiki.jp/yani/pages/15.html
Visualstadioのインスト等チェック中。。。 てすと
https://w.atwiki.jp/livingdeaddoll/pages/374.html
Scary Tales一覧に戻る 没年月日 無し ポエム(原文) Red went to her Grandma s house on a full moon s night, With her basket of medication to tend to her wolf bite. Upon her arrival she finds grandma with big eyes and big teeth, Under the covers in grandma s bed a wolf lies beneath. In her basket Red reaches for her axe ready to take aim, T was then she realized Grandma and the wolf were the same. ポエム(日本語訳) 満月の夜、赤ずきんはおばあちゃんの家に向かった カゴの中には、狼に噛まれた傷を治す薬。 家に着くと、おばあちゃんに大きな牙と耳が生えているのに気づいた おばあちゃんのベッドのシーツの下には狼が眠っている。 カゴの中に忍ばせた斧は目的を果たす準備ができている おばあちゃんが狼だったと気づいたのはそのあとだった。 死亡証明書 無し 付属品 狼:無し 赤ずきん:手斧、バスケット、狼の毛皮(バリアントのみ) 備考 2011年2月発売。 童話『赤ずきん』がモチーフ。 最初のScary Talesシリーズのドール。 Big Bad Wolfは最初の毛皮が生えたドール。 原作では狼がおばあちゃんになりすましていたが、このストーリーではおばあちゃんが狼人間なのでBig Bad Wolfは女性である。 2011年公開のホラー映画『赤ずきん』に時期を合わせて発売された。 赤ずきんのみバリアントが発売された。
https://w.atwiki.jp/sampleisbest/pages/162.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 プロジェクト プロジェクト名 ModelessDlg アプリケーションの種類 Windows アプリケーション 追加のオプション 空のプロジェクト 文字セット Unicode 参考 ダイアログボックス(モードレス) ModelessDlg.cpp // Unicode #include Windows.h #include "resource.h" // 関数プロトタイプ宣言 INT_PTR CALLBACK MainDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); void CreateSubDlg(HWND hDlg); void DestroySubDlg(void); INT_PTR CALLBACK SubDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); // 外部変数構造体 static struct { HINSTANCE hInstance; HWND hSubDlg; } g; //============================================================================== int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) { g.hInstance = hInstance; DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, MainDlgProc); return 0; } //------------------------------------------------------------------------------ INT_PTR CALLBACK MainDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { INT_PTR nRet = TRUE;// メッセージを処理した switch (uMsg) { case WM_COMMAND switch (LOWORD(wParam)) { case IDC_SUBDLG CreateSubDlg(hDlg); break; } break; case WM_INITDIALOG nRet = TRUE;// SetFocusでフォーカスを設定した場合はFALSE break; case WM_CLOSE EndDialog(hDlg, 0); break; case WM_DESTROY DestroySubDlg(); break; default nRet = FALSE;// メッセージを処理しなかった } return nRet; } //------------------------------------------------------------------------------ void CreateSubDlg(HWND hDlg) { if (g.hSubDlg == NULL) { g.hSubDlg = CreateDialog(g.hInstance, MAKEINTRESOURCE(IDD_SUB), hDlg, SubDlgProc); ShowWindow(g.hSubDlg, SW_SHOW); } } //------------------------------------------------------------------------------ void DestroySubDlg(void) { if (g.hSubDlg) { DestroyWindow(g.hSubDlg); g.hSubDlg = NULL; } } //============================================================================== INT_PTR CALLBACK SubDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { INT_PTR nRet = TRUE;// メッセージを処理した switch (uMsg) { case WM_COMMAND switch (LOWORD(wParam)) { case IDOK break; case IDCANCEL DestroySubDlg(); break; } break; case WM_INITDIALOG nRet = TRUE;// SetFocusでフォーカスを設定した場合はFALSE break; case WM_CLOSE DestroySubDlg(); break; default nRet = FALSE;// メッセージを処理しなかった } return nRet; } resource.h #define IDD_MAIN100 #define IDD_SUB101 #define IDC_CHECK11000 #define IDC_SUBDLG1001 #define IDC_CHECK21002 ModelessDlg.rc // resource script #include windows.h #include "resource.h" //------------------------------------------------------------------------------ IDD_MAIN DIALOGEX 100, 100, 320, 200 STYLE WS_POPUPWINDOW | WS_MINIMIZEBOX EXSTYLE WS_EX_APPWINDOW CAPTION "MainDlg" FONT 9, "MS Pゴシック" BEGIN CONTROL"Check1",IDC_CHECK1,"button", BS_AUTOCHECKBOX | WS_TABSTOP,8,8,48,12 PUSHBUTTON"SubDlg",IDC_SUBDLG,264,176,48,16 END //------------------------------------------------------------------------------ IDD_SUB DIALOG 100, 100, 320, 200 STYLE WS_POPUPWINDOW CAPTION "SubDlg" FONT 9, "MS Pゴシック" BEGIN CONTROL"Check2",IDC_CHECK2,"button", BS_AUTOCHECKBOX | WS_TABSTOP,8,8,48,12 DEFPUSHBUTTON"OK",IDOK,212,176,48,16 PUSHBUTTON"Cancel",IDCANCEL,264,176,48,16 END
https://w.atwiki.jp/mmwdx/pages/6.html
BIG中の打ち方 ■JACゲームは2回で終了なので要注意 ■BIG中は逆押で消化。JACINの時のみ順押し、外しは逆押しでオート ■JACINはバナナでナビ、JACゲームは順押しでおk ■JACハズレに特典はありません BIG中小役出現率 4枚役 設定1~5 1/1024.0 設定6 1/546.13 12枚役 1/1.33 ハズレ 設定1~5 1/1024.0 設定6 1/8192.0 ボーナスイン 1/4.00 JACハズレ 1/1820
https://w.atwiki.jp/azounoman/pages/73.html
1423 Big Number 解答例 import java.util.*; public class Main { public static void main(String[] args) { final int ASIZE = 100000; Scanner sc = new Scanner(System.in); int a[] = new int[ASIZE]; double x = 0.0; a[0] = 1; for(int i=1;i ASIZE;i++){ x += Math.log10(i); a[i] = (int)x + 1; } // xl = log((ASIZE-1)!) double xl = x; int n = sc.nextInt(); for(int i=0;i n;i++){ int m = sc.nextInt(); if(m ASIZE){ System.out.println(a[m]); } else{ double y = xl + (((m+0.5) * Math.log(m+0.5) - (m+0.5)) - (((ASIZE-1)+0.5) * Math.log((ASIZE-1)+0.5) - ((ASIZE-1)+0.5))) * Math.log10(Math.E); System.out.println((int)y + 1); } } } }